package com.ityun.ogapp.utils

import android.content.Context
import android.content.Intent
import android.provider.Settings
import android.view.accessibility.AccessibilityManager
import android.accessibilityservice.AccessibilityServiceInfo

/**
 * Android 无障碍服务工具类：判断服务是否启用、跳转至设置页面
 */
object AccessibilityUtils {

    /**
     * 判断指定的无障碍服务是否已启用
     * @param context 上下文
     * @param serviceClassName 目标无障碍服务的完整类名（如：com.example.MyAccessibilityService）
     * @return true：已启用；false：未启用
     */
    fun isAccessibilityServiceEnabled(context: Context?, serviceClassName: String?): Boolean {
        if (context == null || serviceClassName.isNullOrEmpty()) {
            return false
        }

        val accessibilityManager =
            context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager?
                ?: return false

        // 获取所有已启用的无障碍服务信息列表
        val enabledServices = accessibilityManager.getEnabledAccessibilityServiceList(
            AccessibilityServiceInfo.FEEDBACK_ALL_MASK
        )

        if (enabledServices.isNullOrEmpty()) {
            return false
        }

        // 遍历已启用的服务，对比类名是否匹配
        return enabledServices.any { serviceInfo ->
            serviceInfo.resolveInfo?.serviceInfo?.name == serviceClassName
        }
    }

    /**
     * 跳转到系统“无障碍设置”页面
     * @param context 上下文（建议使用 Activity，避免非 Activity 上下文跳转异常）
     */
    fun jumpToAccessibilitySettings(context: Context?) {
        if (context == null) {
            return
        }
        try {
            // 系统无障碍设置页面的 Intent
            val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            context.startActivity(intent)
        } catch (e: Exception) {
            e.printStackTrace()
            // 备选：跳转到系统设置首页（若无障碍页面跳转失败）
            val intent = Intent(Settings.ACTION_SETTINGS)
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            context.startActivity(intent)
        }
    }
}
